#pragma once//;
#include "Vector2.hpp"
#include "GameComponent.hpp"
#include "GameObject.hpp"
#include "Matrix4x4.hpp"
#include "Quaternion.hpp"
#include "RenderSystem.hpp"
#include "Renderable.hpp"
#include "GameWorld.hpp"
#include "TransformHierarchy.hpp"
#include "Hierarchy.hpp"
#include "PhysicsSystem.hpp"

using namespace Typhoon;

class TestComponents {
public:
    TestComponents();
    ~TestComponents();
    
    void Initialize();
    void Update(float dt);
    void Render();
    
    void Fire();
      
private:
    
    Mesh cubeMesh;
    
    RenderSystem<Renderable> renderer;
    
    TransformHierarchy hierarchy;
    
    PhysicsSystem physics;
    
    GameWorld world;
        
    GameObject* light;
    
    GameObject camera;
    
    
    GameObject* CreateCube(Vector3 position);
    GameObject* CreatePhysicsCube(Vector3 position);
    
};


